package app.web.admin.service;

import app.web.admin.domain.ao.LoginAo;
import app.web.admin.domain.ao.PermissionMenusAo;
import app.web.admin.domain.ao.UserCreateAo;
import app.web.admin.domain.ao.UserPatchByIdAo;
import app.web.admin.domain.pojo.Admin;
import app.web.admin.domain.vo.MenuVo;

import java.util.List;

/**
 * 管理员服务
 * @author feizns
 * @since 2025-04-09
 */
public interface AdminService {

    /**
     * 登录验证码
     * @return {@link String }
     */
    String loginCaptcha();

    /**
     * 登录
     * @param ao 请求参数
     * @return {@link String }
     */
    String login(LoginAo ao);

    /**
     * 注销
     */
    void logout();

    /**
     * 用户信息
     * @return {@link Admin }
     */
    Admin userinfo();

    /**
     * 创建
     * @param ao 请求参数
     * @return {@link Admin }
     */
    Admin create(UserCreateAo ao);

    /**
     * 更新根据编号
     * @param id 编号
     * @param ao 请求参数
     * @return {@link Admin }
     */
    Admin patchById(Long id, UserPatchByIdAo ao);

    /**
     * 删除根据编号
     * @param id 编号
     * @return {@link Admin }
     */
    Admin deleteById(Long id);

    /**
     * 权限权限
     * @param ao 请求参数
     * @return {@link List }<{@link MenuVo }>
     */
    List<MenuVo> permissionMenus(PermissionMenusAo ao);

}
